/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.data;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import occho.model.Pregunta;
import occho.model.Respuesta;

/**
 *
 * @author migue
 */
public class OracleRespuestaDAO implements RespuestaDAO{
    private Connection conn = null;
    
    /**
     * Constructor de la clase
     * @param conn
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public OracleRespuestaDAO(Connection conn) throws SQLException, ClassNotFoundException {
        this.conn = conn;
    }
    
    @Override
    public boolean insertarRespuesta(Respuesta resp, Pregunta preg) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("insert into respuesta (idRespuesta, texto, correcta,idPregunta) values(seq_respuesta.nextval, ?, ?,?)");
        stmt.clearParameters();
        //stmt.setInt(1, asig.getIdAsignatura());
        stmt.setString(1, resp.getTexto());
        stmt.setBoolean(2, resp.isEsCorrecta());
        stmt.setInt(3, preg.getIdPregunta());
        if (stmt.executeUpdate() > 0) {
            stmt.close();
            return true;
        }
        else {
            stmt.close();
            return false;
        }
        
    }

    @Override
    public boolean borrarRespuesta(Respuesta re) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("delete from respuesta where idRespuesta = ?");
        stmt.clearParameters();
        stmt.setInt(1, re.getIdRespuesta());
        if (stmt.executeUpdate() > 0) {
            stmt.close();
            return true;
        }
        else {
            stmt.close();
            return false;
        }
    }

    @Override
    public Respuesta seleccionarRespuesta(Respuesta re) throws SQLException, ClassNotFoundException {
        Respuesta r = null;
        PreparedStatement stmt = conn.prepareStatement("select * from respuesta where idRespuesta = ?");
        stmt.clearParameters();
        stmt.setInt(1, re.getIdRespuesta());
        ResultSet rs = stmt.executeQuery();
        if (rs.next()) {
            r = new Respuesta(rs.getInt("idRespuesta"), rs.getString("texto"), rs.getBoolean("correcta"));
        }
        rs.close();
        stmt.close();
        return r;
    }

    @Override
    public List<Respuesta> seleccionarRespuestas() throws SQLException, ClassNotFoundException {
        ArrayList<Respuesta> lista= new ArrayList<Respuesta>();
        PreparedStatement stmt = conn.prepareStatement("select * from respuesta ");
        stmt.clearParameters();
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            lista.add(new Respuesta(rs.getInt("idRespuesta"), rs.getString("texto"), rs.getBoolean("correcta")));
        }
        rs.close();
        stmt.close();
        return lista;
    }

    @Override
    public List<Respuesta> seleccionarRespuestas(int idPregunta) throws SQLException, ClassNotFoundException {
        ArrayList<Respuesta> lista= new ArrayList<Respuesta>();
        PreparedStatement stmt = conn.prepareStatement("select * from respuesta where idPregunta = ?");
        stmt.clearParameters();
        stmt.setInt(1, idPregunta);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            lista.add(new Respuesta(rs.getInt("idRespuesta"), rs.getString("texto"), rs.getBoolean("correcta")));
        }
        rs.close();
        stmt.close();
        return lista;
    }
    
    
}
